<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>async与await</title>
</head>
<body>
<script>
  /* 
		1. async 函数
					函数的返回值为promise对象
					promise对象的结果由async函数执行的返回值决定,或看async函数是否抛出异常
		
    2. await 表达式
					await右侧的表达式一般为Promise实例对象, 但也可以是其它的值
					如果表达式是promise对象, await语句得到的是promise成功的值
					如果表达式是其它值, 直接将此值作为await的返回值
			
    3. 注意:
				await必须写在async函数中, 但async函数中可以没有await
				如果await的promise失败了, 就会抛出异常, 需要通过try...catch来捕获处理
  */

	//async
	/* async function test(){
		return 900
	}
	const result = test()
	console.log(result)
	result.then(
		value => {console.log('ok',value)},
		reason => {console.log('err')}
	) */

	//await
	const p1 = new Promise((resolve,reject)=>{
		setTimeout(()=>{
			resolve('hello1')
		},1000)
	})
	const p2 = new Promise((resolve,reject)=>{
		setTimeout(()=>{
			resolve('hello2')
		},2000)
	})
	const p3 = new Promise((resolve,reject)=>{
		setTimeout(()=>{
			resolve('hello3')
		},3000)
	})

	/* p.then(
		(value)=>{console.log('p成了',value)}
	) */
	
	//使用一下await
	
		;(async function(){
			const value1 = await p1
			console.log(value1)
		})()


	
</script>
</body>
</html>